<?php
require dirname(__DIR__).'/unit_test_conf.php';
require __DIR__.'/Class.php';
define('NAME', basename(__DIR__));

/**
 *	
 */
class UnitTest extends PHPUnit_Framework_TestCase
{
	################################################################################################################################
	#	1. Setting Basic varialbes for Testing..
	################################################################################################################################
	protected static $error;
	protected static $page_seq;
	
	################################################################################################################################
	#	2. Basic Method Testing..
	################################################################################################################################

	/**
	 * 
	 */
	public function testInsert4Class()
	{
		try
		{
			$o = Wdk::get(NAME);
			$o['page_id']		= 'name'.utRc(3);
			$o['page_title']	= utRc(rand(10,40));
			$o['page_content']	= utRc(rand(10,40));
			$o['page_layout']	= utRc(7);
			$o->insert();

			self::$page_seq = $o['page_seq'];
			/************************************************************************************************************************/
			//	Compare Both Data..
			/************************************************************************************************************************/
			$c = Wdk::get(NAME);
			$c->load(self::$page_seq);
			$this->assertEquals($o['page_id']			, $c['page_id']				, "[Error] page_id");
			$this->assertEquals($o['page_title']		, $c['page_title']			, "[Error] page_title");
			$this->assertEquals($o['page_content']		, $c['page_content']		, "[Error] page_content");
			$this->assertEquals($o['page_layout']		, $c['page_layout']			, "[Error] page_layout");
			$this->assertEquals($o['page_insert_time']	, $c['page_insert_time']	, "[Error] page_insert_time");
			$this->assertEquals('F'						, $c['page_del_flag']		, "[Error] page_del_flag");
			/************************************************************************************************************************/
		}
		catch(WException $e)
		{
			self::$error = true;
			$this->assertTrue(False, 'Exception - '.$e->getMessage());
		}
	}
	
	
	/**
	 *	
	 */
	public function testUpdate4Class()
	{
		if(self::$error == true) return;
		try
		{
			$o = Wdk::get(NAME);
			$o->load(self::$page_seq);
			$o['page_title']	= utRc(rand(10,40));
			$o['page_content']	= utRc(rand(10,40));
			$o['page_layout']	= utRc(7);
			$o->update();
			
			/************************************************************************************************************************/
			//	Compare Both Data..
			/************************************************************************************************************************/
			$c = Wdk::get(NAME);
			$c->load(self::$page_seq);
			$this->assertEquals($o['page_title']	, $c['page_title']		, "[Error] page_title");
			$this->assertEquals($o['page_content']	, $c['page_content']	, "[Error] page_content");
			$this->assertEquals($o['page_layout']	, $c['page_layout']		, "[Error] page_layout");
			/************************************************************************************************************************/
		}
		catch(WException $e)
		{
			self::$error = true;
			$this->assertTrue(False, 'Exception - '.$e->getMessage());
		}
	}
	
	
	/**
	 *	
	 */
	public function testDelete4Class()
	{
		if(self::$error == true) return;
		try
		{
			$o = Wdk::get(NAME);
			$o->load(self::$page_seq);
			$o->delete();
			/************************************************************************************************************************/
			//	Compare Both Data..
			/************************************************************************************************************************/
			$c = Wdk::get(NAME);
			$c->load(self::$page_seq);
			$this->assertEquals('T'	, $c['page_del_flag']	, "[Error] page_del_flag");
			/************************************************************************************************************************/
		}
		catch(WException $e)
		{
			self::$error = true;
			$this->assertTrue(False, 'Exception - '.$e->getMessage());
		}
	}
	
	################################################################################################################################
	#	3. Manager Method Testing..
	################################################################################################################################
	/**
	 * 
	 */
	public function testLoad4Manager()
	{
		if(self::$error == true) return;
		try
		{
			$cm = Wdk::get(NAME.'Manager');
			$cm->load();
		}
		catch(NoRecordException $e){}
		catch(WException $e)
		{
			self::$error = true;
			$this->assertTrue(False, 'Exception - '.$e->getMessage());
		}
	}
	
	################################################################################################################################
	#	4. Scenario Testing..
	#	-> a)
	################################################################################################################################
	
	################################################################################################################################
	#	5. Testing tool Methods
	################################################################################################################################
	private function removeTestData()
	{

	}
	public function setUp()
	{
		//	no need..
	}
	public function tearDown()
	{
		//	no need..
	}
	################################################################################################################################
}
?>